#include "function/function.h"
#include <QDebug>

//#include "mainwindow.h"

#include <QCoreApplication>
#include <QDir>
#include <QFile>
#include <QSqlError>
#include <QSqlQuery>

QString SQL_PATH;//数据库路径
QSqlDatabase mybase;//全局管理数据库
QString IpPort;//服务器ip
QString l_username;//用于登录该系统用户名
QString l_password;//用于登录该系统用户密码
int overtime_http = 5000;//http连接超时时间

//加载完整地址
QString URLName(QString name)
{
//    return QString("%1%2").arg(IpPort, name);
    return QString("%1%2").arg(IpPort, name);
}

void configuration(QString path)
{
    path = searchConfigFile(path);
    //创建QFile
    QFile myfile(path);
    //打开文件
    bool ret=myfile.open(QIODevice::ReadOnly);
    if(!ret)
    {
        qDebug()<<__LINE__<<"打开配置文件失败"<<"path="<<path;
        return;
    }
    while(!myfile.atEnd())
    {
        //读取一行数据
        QByteArray array=myfile.readLine();
        QString buf;
//        buf = array.replace(" ","");
        buf = array.replace("\r","");
        buf = array.replace("\n","");

        QStringList mylist = buf.split("##");//如果有注释则解析掉注释部分
        QStringList list = mylist.at(0).split("=");
        if(list.size() < 2) continue;


        if(list.at(0) == "IpPort")
        {
            IpPort = list.at(1);
            qDebug()<<__LINE__<<"服务器ip端口号"<<"IpPort="<<IpPort;
        }
        else if(list.at(0) == "username")
        {
            l_username = list.at(1);
            qDebug()<<__LINE__<<"登录该系统用户名"<<"l_username="<<l_username;
        }
        if(list.at(0) == "password")
        {
            l_password = list.at(1);
            qDebug()<<__LINE__<<"登录该系统用户密码"<<"l_password="<<l_password;
        }
    }

    myfile.close();
}

QString searchConfigFile(QString ConfigFileName)
{
//    char *buffer;
//    buffer = getcwd(NULL, 0);

    QString binDir=QCoreApplication::applicationDirPath();
    QString appName=QCoreApplication::applicationName();
//    QByteArray ary=
//    QString binDir=QString::fromUtf8(buffer);
//    qDebug()<<binDir<<"                "<<appName<<buffer;
    QFile file;
    file.setFileName(binDir+"/"+ConfigFileName);
    if (!file.exists()) {
        file.setFileName(binDir+"/etc/"+ConfigFileName);
        if (!file.exists()) {
            file.setFileName(binDir+"/../etc/"+ConfigFileName);
            if (!file.exists()) {
                file.setFileName(binDir+"/../"+appName+"/etc/"+ConfigFileName);
                if (!file.exists()) {
                    file.setFileName(binDir+"/../../"+appName+"/etc/"+ConfigFileName);
                    if (!file.exists()) {
                        file.setFileName(binDir+"/../../../../../"+appName+"/etc/"+ConfigFileName);
                        if (!file.exists()) {
                            file.setFileName(QDir::rootPath()+"etc/"+ConfigFileName);
                        }
                    }
                }
            }
        }
    }
    if (file.exists()) {
        QString configFileName=QDir(file.fileName()).canonicalPath();	//将相对路径换成绝对路径
        qDebug("using config file %s", qPrintable(configFileName));
        return configFileName;
    }
    else {
        qFatal("config file not found");	//找不到该文件，则应用程序将输出一条错误消息，并中止程序
    }

}

//设置sqllist数据库
void setSqllite()
{
    SQL_PATH = QString("%1box_plug_info.db").arg(MY_PATH);

    //安装数据库的驱动
    mybase=QSqlDatabase::addDatabase("QSQLITE");
    //设置数据库的名字
    mybase.setDatabaseName(SQL_PATH);
    //打开数据库
    bool ret=mybase.open();
    if(!ret)
    {
        qDebug()<<"打开数据库失败,失败原因是: "<<mybase.lastError().text();
//        return;
    }

    QSqlQuery myquery(mybase);

    //nfc信息表
    ret=myquery.exec("CREATE TABLE if not exists nfcinfo (id INTEGER PRIMARY KEY,"
                     "name VARCHAR(255),mark VARCHAR(255),unit VARCHAR(255),factory VARCHAR(255),origin_place VARCHAR(255),number1 INT,number2 INT"
                     ");");
    if(!ret)
    {
        qDebug()<<__LINE__<<"创建表格失败,失败的原因是: "<<myquery.lastError().text();
    }
}
